#include "TDAServidorInseguro.h"
#include "logdebug.h"
#include <string.h>



void crearServidor(TDAServidorInseguro* servidor) {

}

void destruirServidor(TDAServidorInseguro* servidor) {

}

int agregarCorreo(TDAServidorInseguro* servidor, TDACorreo correo) {

    /* Defino variables auxiliares para los campos del correo, si bien *
     * puedo acceder directamente con "correo.<attr>" es recomendable  *
     * no tener interaccion directa con el correo y valerse de los     *
     * getterS correspondientes.
     */
    char remitente[MAX_ADDR_SIZE];
    char destinatario[MAX_ADDR_SIZE];
    char asunto[MAX_SUBJECT_SIZE];
    char cuerpo[MAX_BODY_SIZE];
    time_t fechaHora;

    getDestinatarios(correo, destinatario);
    getAsunto(correo, asunto);
    getTextoCuerpo(correo, cuerpo);
    getRemitente(correo, remitente);

    time(&fechaHora);

    setTextoCuerpo( &(servidor->correo), cuerpo);
    setAsunto(&(servidor->correo), asunto);
    setDestinatario(&(servidor->correo), destinatario);
    setRemitente(&(servidor->correo), remitente);
    setFechaHoraEnviado(&(servidor->correo), fechaHora);

    logmacro("Hora de enviado: %s",ctime(&(servidor->correo.fechaHora)));

	return 0;
}

int obtenerProximoCorreo(TDAServidorInseguro* servidor, char* destinatario, TDACorreo* correo) {

    time_t hora_aux;

    logmacro("\nMensaje almacenado dirigido a: %s\n",(servidor->correo).destinatario);

    /* Verifico que el mensaje alojado en el server corresponda al destinatario deseado */
    if ( !(strcmp((servidor->correo).destinatario,destinatario)) ){

        hora_aux = (servidor->correo).fechaHora;
        setAsunto(correo, (char*)((servidor->correo).asunto));
        setDestinatario(correo, (char*)((servidor->correo).destinatario));
        setRemitente(correo, (char *)((servidor->correo).remitente));
        setFechaHoraEnviado(correo,hora_aux);

    }else
        return NO_MESSAGES;

	return 0;
}
